package models

import (
	"github.com/beego/beego/v2/client/orm"
	// don't forget this
	_ "github.com/go-sql-driver/mysql"
)

// User -
type User struct {
	Id   int    `orm:"column(id)" json:"id"`
	Name string `orm:"column(name)" json:"name"`
	Age  int    `orm:"column(age)" json:"age"`
}

// 定义User 模型绑定那个表？
func (u *User) TableName() string {
	// 返回mysql表名
	return "user"
}

func init() {
	orm.RegisterModel(new(User))
}

// 根据id查询用户信息
func GetUserById(id int) *User {
	if id == 0 {
		return nil
	}

	// 创建orm对象, 后面都是通过orm对象操作数据库
	o := orm.NewOrm()

	// 初始化一个User模型对象
	user := User{}
	// 设置查询参数
	user.Id = id

	// 调用Read方法，根据user设置的参数，查询一条记录，结果保存到user结构体变量中
	// 默认是根据主键进行查询
	// 等价sql： SELECT `id`, `username`, `password` FROM `users` WHERE `id` = 1
	err := o.Read(&user)

	// 检测查询结果，
	if err == orm.ErrNoRows {
		// 找不到记录
		return nil
	} else if err == orm.ErrMissPK {
		// 找不到住建
		return nil
	}

	return &user
}
